package edu.gu.hajo.gcl.interp;

import java.util.Map;

import edu.gu.hajo.gcl.cmd.IMutableCommand;
import edu.gu.hajo.gcl.script.Script;

/**
 * Interpreterinterface
 * @author hajo
 * 
 */
public interface IInterpreter {
	
	public abstract void eval(Script sc);

	public abstract String getResult();

	public abstract void setResult(String result);

	public abstract void setVar(String name, String value);

	public abstract String getVar(String name);

	// Procedure call stack
	public abstract void pushCallframe(String procName, Map<String, String> localVars );

	public abstract void popCallframe();

	// Needed for returnstatement in proc's
	public abstract void setReturn(boolean b);
	
	// Userdef commands
	public abstract void createCommand(String name, IMutableCommand proc);

}